package br.uniriotec.pm.dao.textFile;

import java.math.BigDecimal;
import java.util.Set;

import br.uniriotec.pm.dao.DAORegistroVendasMes;
import br.uniriotec.pm.dao.textFile.exception.TextFileAccessException;
import br.uniriotec.pm.domain.Produto;
import br.uniriotec.pm.domain.RegistroVendas;
import br.uniriotec.pm.domain.RegistroVendasMes;
import br.uniriotec.pm.domain.Vendedor;

public class TextFileDAORegistroVendasMes extends TextFileDAO implements DAORegistroVendasMes {

	public TextFileDAORegistroVendasMes() {
		super();
	}

	public TextFileDAORegistroVendasMes(String caminhoArquivoTexto) throws TextFileAccessException {
		super(caminhoArquivoTexto);
	}

	@Override
	public void gravarRegistroVendasMes(RegistroVendasMes registroVendasMes) {
		abrirGravacaoArquivo();
		
		Set<Vendedor> vendedores = registroVendasMes.getConjuntoVendedores();
		for (Vendedor vendedor : vendedores) {
			RegistroVendas registroVendas = registroVendasMes.getRegistroVendasVendedor(vendedor);
			String linha = gerarLinhaArquivoRegistroVendasMes(registroVendasMes.getMes(), vendedor, registroVendas);
			gravarLinha(linha);
		}
		
		fecharGravacaoArquivo();
	}
	
	private String gerarLinhaArquivoRegistroVendasMes(String mes, Vendedor vendedor, RegistroVendas registroVendas) {
		StringBuffer sb = new StringBuffer();
		
		sb.append(mes);
		sb.append(DELIMITADOR_PADRAO);
		sb.append(vendedor.getCodigo());
		sb.append(DELIMITADOR_PADRAO);
		sb.append(vendedor.getNome());
		sb.append(DELIMITADOR_PADRAO);
		
		Set<Produto> produtos = registroVendas.getConjuntoProdutos();
		for (Produto produto : produtos) {
			BigDecimal valorVendidoProduto = registroVendas.getValorVendido(produto);
			sb.append(valorVendidoProduto);
			sb.append(DELIMITADOR_PADRAO);
		}
		
		sb.append(registroVendas.getValorTotalVendido());
		sb.append(DELIMITADOR_PADRAO);
		sb.append(registroVendas.getComissao());
		
		return sb.toString();
	}
}
